<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>21_reduce扁平化数组(拼接数组)</title>
</head>

<body>
  <script>
    var arr = [[1, 2, 3], [4, 5], [6, 7]];
    var result = arr.reduce(function a(prev, next, index) {

      // 以 return 的形式书写每次的叠加条件, 前数组拼接后数组 .concat()
      return prev.concat(next);
    }, []);

    console.log(result);

    /**
     * reduce 原理
     *    1. 准备了一个初始值, 按照你传递的第二个参数来定
     *      var arr = [1, 2, 3, 4, 5, 6, 7];
     *    2. 根据原始数组了调用 a 函数
     *      => 第一次调用 a([],              [1, 2, 3], 0, 原始数组),   return [1, 2, 3],             把 返回值再次赋值给 arr
     *      => 第二次调用 a([1, 2, 3],       [4, 5],    1, 原始数组),   return [1, 2, 3, 4, 5],       把 返回值再次赋值给 arr
     *      => 第三次调用 a([1, 2, 3, 4, 5], [6, 7],    2, 原始数组),   return [1, 2, 3, 4, 5, 6, 7], 把 返回值再次赋值给 arr
    */
  </script>
</body>

</html>
